package com.hz.ruoyifarmbase.basedata.service;


import com.baomidou.mybatisplus.extension.service.IService;
import com.hz.ruoyifarmbase.basedata.domain.AgrGermType;
import com.hz.ruoyifarmbase.basedata.domain.vo.TreeSelect;


import java.util.List;

/**
 * 种质类型Service接口
 *
 * @author xqd
 * @date 2025-03-05
 */
public interface IAgrGermTypeService extends IService<AgrGermType>
{
    /**
     * 查询种质类型
     *
     * @param typeId 种质类型主键
     * @return 种质类型
     */
    public AgrGermType selectAgrGermTypeByTypeId(Long typeId);

    /**
     * 查询种质类型列表
     *
     * @param agrGermType 种质类型
     * @return 种质类型集合
     */
    public List<AgrGermType> selectAgrGermTypeList(AgrGermType agrGermType);
    public List<AgrGermType> selectAgrGermTypeListInner(AgrGermType agrGermType);

    /**
     * 新增种质类型
     *
     * @param agrGermType 种质类型
     * @return 结果
     */
    public int insertAgrGermType(AgrGermType agrGermType);

    /**
     * 修改种质类型
     *
     * @param agrGermType 种质类型
     * @return 结果
     */
    public int updateAgrGermType(AgrGermType agrGermType);

    /**
     * 批量删除种质类型
     *
     * @param typeIds 需要删除的种质类型主键集合
     * @return 结果
     */
    public int deleteAgrGermTypeByTypeIds(Long[] typeIds);

    /**
     * 删除种质类型信息
     *
     * @param typeId 种质类型主键
     * @return 结果
     */
    public int deleteAgrGermTypeByTypeId(Long typeId);
    /**
     * 查询种质树结构信息
     *
     * @param agrGermType 种质信息
     * @return 种质树信息集合
     */
    public List<TreeSelect> selectAgrGermTypeTreeList(AgrGermType agrGermType);

    /**
     * 构建前端所需要树结构
     *
     * @param agrGermTypes 种质列表
     * @return 树结构列表
     */
    public List<AgrGermType> buildAgrGermTypeTree(List<AgrGermType> agrGermTypes);

    /**
     * 构建前端所需要下拉树结构
     *
     * @param agrGermTypes 种质列表
     * @return 下拉树结构列表
     */
    public List<TreeSelect> buildAgrGermTypeTreeSelect(List<AgrGermType> agrGermTypes);
    public Long countAgrGermType();
//
//    /**
//     * 根据角色ID查询种质树信息
//     *
//     * @param roleId 角色ID
//     * @return 选中种质列表
//     */
//    public List<Long> selectAgrGermTypeListByRoleId(Long roleId);
}
